import { reactive, ref } from "vue";
import { defineStore } from "pinia";

export const useUserStore = defineStore('user', () => {// 定义一个名为'user'的store，并返回一个对象包含状态数据和方法
    // state状态数据
    const UserInfo = reactive({
        username: '',
        role: 'student',
    });

    // action方法
    // set方法，用于设置用户信息并保存到本地存储中
    function setUserInfo(data:any) {//通过参数设置用户信息，并保存到本地存储中
        //本地数据持久化
        localStorage.setItem('userInfo', JSON.stringify(data));
        UserInfo.username = data.username;
        UserInfo.role = data.role;
    }

    // get方法，用于从本地存储中获取用户信息并返回
    function getUserInfo() {//从本地存储中获取用户信息并返回
        const userInfo = localStorage.getItem('userInfo');
        return userInfo ? JSON.parse(userInfo) : null;
    }

    // clear方法，用于清空用户信息并从本地存储中删除用户信息
    function clearUserInfo() { 
        // 清空用户信息，将role设置为默认值
        UserInfo.role='student';
        // 清空用户信息，将username设置为默认值
        UserInfo.username='';

        localStorage.removeItem('userInfo');// 清除本地存储中的用户信息
    }

    return { // 返回对象，包含操作状态的方法
        setUserInfo, 
        getUserInfo,
        clearUserInfo
    };
});

